From: awilliam@xenbuild2.aw Date: Mon, 15 Jan 2007 05:18:38 +0000 (-0700) Subject: [IA64] Fix save/restore X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~15406 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https://%22%22/%22http:/www.example.com/cgi/%22https:/%22%22?a=commitdiff_plain;h=e24fb235e0fa71cdede6ee905c56b0b597001cae;p=xen.git [IA64] Fix save/restore Using the new hypercall path, scratch registers are not saved/restored. So after returning from hypercall, r20 may contain garbage data. This triggered General Exception. Signed-off-by: Anthony Xu --- diff --git a/linux-2.6-xen-sparse/arch/ia64/xen/xensetup.S b/linux-2.6-xen-sparse/arch/ia64/xen/xensetup.S index 256c564fa8..c295cc3431 100644 --- a/linux-2.6-xen-sparse/arch/ia64/xen/xensetup.S +++ b/linux-2.6-xen-sparse/arch/ia64/xen/xensetup.S @@ -39,7 +39,7 @@ END(early_xen_setup) Just force the stacked registers to be written in memory. */ GLOBAL_ENTRY(xencomm_arch_hypercall_suspend) ;; - alloc r20=ar.pfs,0,0,2,0 + alloc r20=ar.pfs,0,0,6,0 mov r2=__HYPERVISOR_sched_op ;; /* We don't want to deal with RSE. */ @@ -49,6 +49,5 @@ GLOBAL_ENTRY(xencomm_arch_hypercall_suspend) ;; break 0x1000 ;; - mov ar.pfs=r20 br.ret.sptk.many b0 END(xencomm_arch_hypercall_suspend)